package cn.always.xiajia.admin.sys.entity;

import java.util.ArrayList;
import java.util.List;

import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import cn.always.xiajia.framework.mybatis.core.entity.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * 菜单
 * 
 * @author xgj
 *
 */
@TableName(value = "sys_menu", autoResultMap = true)
@KeySequence("sys_menu_seq")
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class SysMenu extends BaseEntity {

	/**
	 * 菜单编号 - 根节点
	 */
	public static final Long ID_ROOT = 0L;

	private static final long serialVersionUID = -3599512518298776331L;

	/** 菜单ID */
	@TableId
	protected Long menuId;

	/** 菜单名称 */
	protected String menuName;

	/** 菜单名称中文名称 */
	protected String menuZhCn;

	/** 父菜单ID */
	protected Long parentId;

	/** 显示顺序 */
	protected Integer orderNum;

	/** 路由地址 */
	protected String path;

	/** 组件路径 */
	protected String component;

	/** 组件名 */
	protected String componentName;

	/** 是否为外链（0是 1否） */
	protected String isFrame;

	/** 是否缓存（0缓存 1不缓存） */
	protected String isCache;

	/** 类型（M目录 C菜单 F按钮） */
	protected String menuType;

	/** 显示状态（0显示 1隐藏） */
	protected String visible;

	/** 菜单状态（0正常 1停用） */
	protected String status;

	/** 权限字符串 system:admin:add */
	protected String perms;

	/** 菜单图标 */
	protected String icon;

	/** 父菜单名称 */
	@TableField(exist = false)
	protected String parentName;

	/** 子菜单 */
	@TableField(exist = false)
	protected List<SysMenu> children = new ArrayList<SysMenu>();

}
